package com.heima.zuoye.day08.timu1;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class DemoArrayListNames {
    /**
     * 主函数入口
     * 演示了如何使用Java Stream API处理集合数据，并创建Person对象列表
     *
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        // 初始化第一个列表，包含一系列风字辈人物名称
        List<String> one = new ArrayList<>();
        one.add("黄老邪");
        one.add("陈玄风");
        one.add("梅超风");
        one.add("陆乘风");
        one.add("曲灵风");
        one.add("武眠风");
        one.add("冯默风");
        one.add("罗玉风");

        // 初始化第二个列表，包含武当张三丰及其弟子的名称
        List<String> two = new ArrayList<>();
        two.add("张三丰");
        two.add("宋远桥");
        two.add("俞莲舟");
        two.add("俞岱岩");
        two.add("张松溪");
        two.add("张翠山");
        two.add("殷梨亭");
        two.add("莫声谷");

        // 从第一个列表中筛选出长度为3的字符串，并限制结果数量为3，然后打印
        one.stream().filter(s -> s.length() == 3).limit(3).forEach(s -> System.out.println(s));

        // 从第二个列表中筛选出以"张"开头的字符串，并跳过前两个结果，然后打印
        two.stream().filter(s -> s.startsWith("张")).skip(2).forEach(s -> System.out.println(s));

        // 创建两个Stream对象，分别基于之前的筛选条件
        Stream<String> str = one.stream().filter(s -> s.length() == 3).limit(3);
        Stream<String> str1 = two.stream().filter(s -> s.startsWith("张")).skip(2);

        // 合并两个Stream对象，并将结果收集到一个新的List中
        //Stream<String> concat = Stream.concat(str, str1);
        Stream.concat(str, str1).map(s -> new Person(s)).forEach(s -> System.out.println(s));
/*        List<String> list = concat.collect(Collectors.toList());

        // 初始化一个Person对象列表
        List<Person> people = new ArrayList<>();
        // 遍历字符串列表，为每个字符串创建一个Person对象，并添加到Person列表中
        for (String s : list) {
            people.add(new Person(s));
        }

        // 遍历Person列表，打印每个Person对象
        for (Person person : people) {
            System.out.println(person);
        }*/
    }
}
